﻿using System;
using System.Collections.Generic;
using System.Net;

using SilverlightCairngorm;

namespace SilverlightCairngorm.Business
{
	/// <summary>
	/// The ServiceLocator allows service to be located and security credentials to be managed.
	/// </summary>
	public abstract class ServiceLocator : IServiceLocator
	{
		private Dictionary<string, WebClient> _httpServices = new Dictionary<string, WebClient>();

		/// <summary>
		/// register a service
		/// </summary>
		/// <param name="serviceName"></param>
		/// <param name="serviceClient"></param>
		public void addHTTPService(string serviceName, WebClient serviceClient)
		{
			_httpServices.Add(serviceName, serviceClient);
		}

		/// <summary>
		/// Un-register a service
		/// </summary>
		/// <param name="serviceName"></param>
		public void removeHTTPService(string serviceName)
		{
			if (_httpServices.ContainsKey(serviceName))
				_httpServices.Remove(serviceName);
		}

		/// <summary>
		/// Return the HTTPService for the given name.
		/// </summary>
		/// <param name="name"></param>
		/// <returns></returns>
		public WebClient getHTTPService(String name)
		{
			if (_httpServices.ContainsKey(name))
				return _httpServices[name];
			return null;
		}

		/// <summary>
		/// Set the credentials for all registered services.
		/// </summary>
		/// <param name="username"></param>
		/// <param name="password"></param>
		public void setCredentials(String username, String password)
		{
			throw new NotImplementedException("Please contact modestyZ@hotmail.com to implement setCredentials method");
		}

		/// <summary>
		/// Set the remote credentials for all registered services.
		/// </summary>
		/// <param name="username"></param>
		/// <param name="password"></param>
		public void setRemoteCredentials(String username, String password)
		{
			throw new NotImplementedException("Please contact modestyZ@hotmail.com to implement setRemoteCredentials method");
		}

		/// <summary>
		/// Logs the user out of all registered services.
		/// </summary>
		public void logout()
		{
			throw new NotImplementedException("Please contact modestyZ@hotmail.com to implement setRemoteCredentials method");
		}

	}
   
}
